Ext.onReady(function() {
	Ext.lib.Ajax.defaultPostHeader += '; charset=utf-8';// 处理ie提交中文乱码问题
	
	var dateConv = function(v){
		if(!v)return;
		else{
			return new Date(v.time)
		}
	}
	// 定义一个checkBox
	var sm = new Ext.grid.CheckboxSelectionModel({
		singleSelect : true
	});
	// 选中记录是否高亮显示
	sm.handleMouseDown = Ext.emptyFn;
	// 定义一个ColumnModel，表头中有N列
	var cm = new Ext.grid.ColumnModel([sm,  
     {header:'id',dataIndex:'id'},
     {header:'供应商编号',dataIndex:'unitno'},
     {header:'供应商名称',dataIndex:'uname'},
     {header:'法人',dataIndex:'corporator'},
     {header:'电话',dataIndex:'telephone'},
     {header:'手机',dataIndex:'mobile'},
     {header:'传真',dataIndex:'fax'},
     {header:'邮箱',dataIndex:'email',hidden:true},
     {header:'地址',dataIndex:'addr'},
     {header:'邮政编码',dataIndex:'postcode'},
     {header:'网址',dataIndex:'wwwaddr'},
     {header:'联系人',dataIndex:'linker'},
     {header:'联系人电话',dataIndex:'linkertel'},
     {header:'联系人手机',dataIndex:'linkermobile'},
     {header:'联系人传真',dataIndex:'linkerfax'},
     {header:'联系人邮箱',dataIndex:'linkeremail',hidden:true},
     {header:'联系人所属部门',dataIndex:'linkerdept'},
     {header:'生产厂址',dataIndex:'factoryaddr'},
     {header:'开票地址',dataIndex:'ticketaddr'},
     {header:'注册资金',dataIndex:'rgefund'},
     {header:'产值',dataIndex:'prodvalue'},
     {header:'厂家电话',dataIndex:'facttel'},
     {header:'厂家联系人',dataIndex:'factlinker'},
     {header:'登记时间',dataIndex:'regdate'},
     {header:'主管采购员',dataIndex:'pid'},
     {header:'开户银行',dataIndex:'accbank'},
     {header:'户名',dataIndex:'accuser'},
     {header:'银行帐号',dataIndex:'accno'},
     {header:'帐号电话',dataIndex:'acctel'},
     {header:'税号',dataIndex:'taxno'},
     {header:'支付方式',dataIndex:'paykind'},
     {header:'信用额度(提供给我方)',dataIndex:'credit'},
     {header:'主要产品',dataIndex:'mainmate'},
     {header:'运输周期',dataIndex:'trafficdate'},
     {header:'质保期',dataIndex:'servicedate'},
     {header:'签定合同编号',dataIndex:'pactno'},
     {header:'上次结帐日期',dataIndex:'jzdate',renderer : Ext.util.Format.dateRenderer('Y-m-d')},
     {header:'结帐周期',dataIndex:'jzperiod'},
     {header:'备注',dataIndex:'remark'},
     {header:'修改人',dataIndex:'modipid'},
     {header:'修改时间',dataIndex:'modidate'}]);
	// cm.setHidden(4,!cm.isHidden(1));//隐码列
	// cm.setHidden(7,!cm.isHidden(7));//隐码列
	/*
	 * ArrayReader ds要对应两个部分：proxy和reader。proxy告诉我们从哪里获得数据，reader告诉我们如何解析这个数据。
	 * Ext.data.MemoryProxy，它是专门用来解析js变量的。你可以看到，我们直接把data作为参数传递进去了。
	 */
	var ds = new Ext.data.Store({
		baseParams : {
			trancode : '11120'
		},
		proxy : new Ext.data.HttpProxy({
			url : '../' + WebServiceUrl
		}),
		reader : new Ext.data.JsonReader({
			totalProperty : 'totalProperty',
			root : 'root'
		},  
        [     {name : 'id'          },          
              {name : 'unitno'      },        
              {name : 'uname'       },        
              {name : 'corporator'  },        
              {name : 'telephone'   },        
              {name : 'mobile'      },        
              {name : 'fax'         },        
              {name : 'email'       },        
              {name : 'addr'        },        
              {name : 'postcode'    },        
              {name : 'wwwaddr'     },        
              {name : 'linker'      },        
              {name : 'linkertel'   },        
              {name : 'linkermobile'},        
              {name : 'linkerfax'   },        
              {name : 'linkeremail' },        
              {name : 'linkerdept'  },        
              {name : 'factoryaddr' },        
              {name : 'ticketaddr'  },        
              {name : 'rgefund'     },        
              {name : 'prodvalue'   },        
              {name : 'facttel'     },        
              {name : 'factlinker'  },        
              {name : 'regdate'     },        
              {name : 'pid'         },        
              {name : 'accbank'     },        
              {name : 'accuser'     },        
              {name : 'accno'       },        
              {name : 'acctel'      },        
              {name : 'taxno'       },        
              {name : 'paykind'     },        
              {name : 'credit'      },        
              {name : 'mainmate'    },        
              {name : 'trafficdate' },        
              {name : 'servicedate' },        
              {name : 'pactno'      },        
              {name : 'jzdate'      ,convert:dateConv},        
              {name : 'jzperiod'    },        
              {name : 'remark'      },        
              {name : 'modipid'     },        
              {name : 'modidate'    }])
	});

	/* 装配 */
	/*
	 * 注意：Ext.grid.Grid的第一个参数是渲染的id， 对应在html里应该有一个 <div id="grid"></div>的东西，这样grid才知道要把自己画到哪里。
	 * 创建完grid以后，还要用grid.render()方法，让grid开始渲染，这样才能显示出来。
	 */

	cm.defaultSortable = true; // 设置列可排序

	var grid = new Ext.grid.GridPanel({
		el : 'providergrid',
		ds : ds,
		cm : cm,
		loadMask : {
			msg : '正在加载数据，请稍候。。。'
		},
		// 定义分页
		bbar : new Ext.PagingToolbar({
			pageSize : App.pageSize,
			store : ds,
			displayInfo : true,
			displayMsg : '显示第 {0} 条到 {1} 条记录，一共 {2} 条',
			emptyMsg : "没有记录"
		}),
		sm : sm,
		title : "供应商信息",
		iconCls : 'icon-grid',
		tbar : [{
			text : '添加',
			tooltip : '添加',
			handler : doAdd,
			iconCls : 'add'
		},'-',{
			text : '编辑',
			tooltip : '编辑',
			handler : doEdit,
			iconCls : 'option'
		},'-',{
			text : '删除',
			tooltip : '删除',
			handler : doDel,
			iconCls : 'remove'
		},'-',{
			text : "条件",
			id : "111"

		}, {
			xtype : "textfield",
			id : 'keywords',
			selectOnFocus : true
		}, {
			text : '查询',
			tooltip : '查询',
			handler : doSearch,
			iconCls : 'search'
		}],
		bodyStyle : 'width:100%',
		//frame : true,
		stripeRows : true,
		height : Ext.get("providergrid").getHeight()
	});

	grid.on('rowclick', function(grid, t) {
		if (sm.isSelected(t))
			sm.deselectRow(t);
		else
			sm.selectRow(t, true);
	});
	grid.on('rowdblclick',function(grid, t){
		var record = grid.getStore().getAt(t);
		if(record!=null){
			new App.ShowImg(record);
		}
	})
	grid.render();
	ds.load({
		params : {
			start : 0,
			limit : App.pageSize
		}
	});
	//单击事件
	grid.on('rowclick', function(grid, t) {
		if (sm.isSelected(t))
			sm.deselectRow(t);
		else
			sm.selectRow(t, true);
	});	
	/** 添加* */
	function doAdd() {
		new App.AddProvider(ds);
	}
	/** 编辑* */
	function doEdit() {		
		var _record = grid.getSelectionModel().getSelected();
		if (!_record) {
			Ext.MessageBox.alert('警告', '请选择一条信息，进行修改!');
		} else {
			// 修改操作
			var record = grid.getSelectionModel().getSelected();
			new App.EditProvider(ds,record);
		}
	}
	/** 删除* */
	function doDel() {
		var rows = grid.getSelectionModel().getSelections();// 返回值为 Record 数组 

		if (rows.length == 0) {
			Ext.MessageBox.alert('警告', '最少选择一条信息，进行删除!');
		} else {
			Ext.MessageBox.confirm('提示框', '您确定要进行该操作？', function(btn) {
				if (btn == 'yes') {
					if (rows) {
						for (var i = 0; i < rows.length; i = i + 1) {
							//删除]
							Ext.Ajax.request({
										url : '../' + WebServiceUrl,
										params : {
											trancode : '11124',
											id : rows[i]
													.get("id")
										},
										success : function(result) {
											json = Ext.util.JSON
													.decode(result.responseText);
											if (json.success) {
												//  Ext.MessageBox.alert('操作成功',json.message);
												ds.load({
													params : {
														start : 0,
														limit : App.pageSize
													}
												});
											} else {
												Ext.MessageBox.alert('操作失败',
														json.message);
												ds.load({
													params : {
														start : 0,
														limit : App.pageSize
													}
												});
											}
										}
									});
						}
					}

				}

			});
		}
	}
	/* 查询函数 */
	function doSearch() {
		var keywords = Ext.get('keywords').dom.value;
		ds.baseParams = {
			keywords : keywords,
			trancode : '12131'
		};
		ds.load({
			params : {
				start : 0,
				limit : App.pageSize
			}
		});
	}
	//注册回车查询事件
	Ext.getCmp('keywords').on('specialkey', doSearch);
})
